package done.easy_701_800;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

import static java.lang.Math.abs;

/**
 * 754. Reach a Number 到达终点数字
 * <p>
 * 在一根无限长的数轴上，你站在0的位置。终点在target的位置。
 * 每次你可以选择向左或向右移动。第 n 次移动（从 1 开始），可以走 n 步。
 * 返回到达终点需要的最小移动次数。
 * <p>
 * 示例 1:
 * 输入: target = 3
 * 输出: 2
 * 解释:
 * 第一次移动，从 0 到 1 。   第1次走1步
 * 第二次移动，从 1 到 3 。   第2次走2步
 * 示例 2:
 * 输入: target = 2
 * 输出: 3
 * 解释:
 * 第一次移动，从 0 到 1 。   第1次走1步
 * 第二次移动，从 1 到 -1 。  第2次走2步
 * 第三次移动，从 -1 到 2 。  第3次走3步
 * <p>
 * <p>
 * ---------------------------->
 * <---------------------
 * -------------->
 * target = 4
 * ------>
 * |______|______|______|______|______|______|______|______|______|______|______|______|_____|
 * -3    -2     -1      0      1      2      3      4      5      6      7      8      9    10
 * target = 6
 * ------>
 * -------------->
 * -------------------->
 * -------------------------->
 *
 * @author 大硕
 * 2019-03-29 11:43 PM
 **/
@Slf4j
public class ReachANumber {

    @SuppressWarnings("all")
    public int reachNumber(int target) {
        // 190330 first
        return -1;
    }

    @Test
    public void test() {
        log.info("{}", reachNumber(10));
    }
}





























/*
public int reachNumber(int target) {
    //若走到第i步正好到达target位置，则需要i-1(因为在for循环时多加了1)
    //若走到第i步时，多了奇数个数，则需要两步
    //若走到第i步时，多了偶数个数，则需要一步
    int i;
    int sum=0;

    target = abs(target);

    // 先把倒数几次的累加在一起
    for (i=0; sum<target; i++) {
        sum+=i;
    }

    i--;

    if (abs(sum-target)%2 != 0) {
        if (i%2 == 0) {
            return i + 1;
        } else {
            return i + 2;
        }
    } else {
        return i;
    }
}
*/
